package com.tcc.fastline.Domain;

import com.google.gson.annotations.SerializedName;
import com.tcc.fastline.validators.EmailValidator;

public class UsuarioSistema {
	@SerializedName("id")
	private Integer codigo;
	
	@SerializedName("nome")
	private String nome;
	
	@SerializedName("email")
	private String email;
	
	@SerializedName("password")
	private String senha;
	
	@SerializedName("tipoUsuario")
	private TipoUsuario tipo;
	
	@SerializedName("contatoTelefonico")
	private String contatoTelefonico;

	public UsuarioSistema(TipoUsuario tipoUsuario){
		this.setTipoUsuario(tipoUsuario);
	} 
	
	public TipoUsuario getTipoUsuario() {
		return tipo;
	}
	
	public boolean isValid(){
		return isNomeValid()
				&& isEmailValid()
				&& isSenhaValid();
	}

	private boolean isSenhaValid() {
		return !this.getSenha().equals("0") || !this.getSenha().isEmpty();
	}

	private boolean isNomeValid() {
		return this.getNome() != null && !this.getNome().isEmpty();
	}
	
	private boolean isEmailValid() {
		return this.getEmail() != null 
				&& !this.getEmail().isEmpty() 
				&& EmailValidator.Validar(this.getEmail());
	}

	protected void setTipoUsuario(TipoUsuario tipoUsuario) {
		this.tipo = tipoUsuario;
	}

	public Integer getCodigo() {
		return codigo;
	}

	public void setCodigo(Integer codigo) {
		this.codigo = codigo;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}
	
	public String getContatoTelefonico(){
		return this.contatoTelefonico;
	}
	
	public void setContatoTelefonico(String contato)
	{
		this.contatoTelefonico = contato;
	}
}
